function nexpr = subs(expr, varargin)
    % 用于替换表达式中的符号。使用方法：
    % newexpr = subs(expr, var, newval);
    % newexpr = subs(expr, newval);
    % 如不指定替换的变量，var将会被赋值成list(expr.free_symbols).sort()[0]。新变量必须提供。

    if nargin ~= 2 && nargin ~= 3
        error("请输入正确的参数");
    end

    if nargin == 3
        nexpr = expr.subs(varargin{1}, varargin{2});
        return;
    end 
    
    if nargin == 2
        py = pyroot;
        fs_list = py.list(expr.free_symbols);
        fs_list.sort();
        nexpr = expr.subs(fs_list{0}, varargin{1});
        return;
    end 
end